package com.cf.base.comm.tools;

import android.content.Context;
import android.util.DisplayMetrics;

/**
 * @author yangji
 */
public class DisplayUtils {

    public static BaseSingleton<DisplayUtils> singleton = new BaseSingleton<DisplayUtils>() {
        @Override
        protected DisplayUtils create() {
            return new DisplayUtils();
        }
    };

    /**
     * ApplicationContext
     */
    private Context context;

    private DisplayUtils() {
    }

    void init(Context context) {
        this.context = context.getApplicationContext();
    }

    /**
     * 获取屏幕宽高
     *
     * @return 屏幕宽高
     */
    public int[] defaultDisplayMetrics() {
        DisplayMetrics dm = getDisplayMetrics();
        return new int[]{dm.widthPixels, dm.heightPixels};
    }

    /**
     * 获取屏幕宽度
     *
     * @return 获取屏幕宽度
     */
    public int getScreenWidth() {
        return defaultDisplayMetrics()[0];
    }

    /**
     * 获取屏幕高度
     *
     * @return 获取屏幕高
     */
    public int getScreenHeight() {
        return defaultDisplayMetrics()[1];
    }

    /**
     * px 转 dp
     *
     * @param px px
     * @return dp
     */
    public int px2dp(int px) {
        return (int) (px / getDisplayMetrics().density);
    }

    /**
     * px 转 sp
     *
     * @param px px
     * @return sp
     */
    public int px2sp(int px) {
        return (int) (px / getDisplayMetrics().scaledDensity);
    }

    /**
     * dp 转 PX
     *
     * @param dip dip
     * @return px
     */
    public int dp2px(float dip) {
        return (int) (dip * getDisplayMetrics().density);
    }

    /**
     * sp 转 PX
     *
     * @param sp sp
     * @return px
     */
    public int sp2px(float sp) {
        return (int) (sp * getDisplayMetrics().scaledDensity);
    }

    /**
     * 获取屏幕显示指标
     *
     * @return 屏幕显示指标
     */
    private DisplayMetrics getDisplayMetrics() {
        return context.getResources().getDisplayMetrics();
    }


}
